package com.kazares.dto;

import com.google.gson.Gson;
import com.google.gson.JsonObject;
import com.kazares.anotaciones.Columna;
import com.kazares.anotaciones.Entidad;
import com.kazares.dao.UtilDao;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.Date;
import java.util.HashMap;

/**
 * DTO de la clase Usuario @session
 *
 * @author acazares Alejandro Cazares Diaz, Gdl. Jal. Mex. Jul/2013
 */
@Entidad(tabla = "usuarios", esquema = "jv71")
public class Usuario implements Serializable {

    public static final int GRADO_ACADEMICO_OTRO = 0;
    public static final int GRADO_ACADEMICO_PRIMARIA = 1;
    public static final int GRADO_ACADEMICO_SECUNDARIA = 2;
    public static final int GRADO_ACADEMICO_MEDIOSUPERIOR = 3;
    public static final int GRADO_ACADEMICO_SUPERIOR = 4;
    public static final int GRADO_ACADEMICO_MAESTRIA = 5;
    public static final int GRADO_ACADEMICO_DOCTORADO = 6;
    public static final int STATUS_ACADEMICO_ESTUDIANTE = 0;
    public static final int STATUS_ACADEMICO_EGRESADO = 0;
    public static final int USUARIO_TIPO_ADMINISTRADOR = 0;
    public static final int USUARIO_TIPO_PERSONA = 1;
    private String id;
    private String nombre;
    private String apellidos;
    private String email;
    private String password;
    private Boolean status;
    private Date fechaRegistro;
    private Date fechaUltimoIngreso;
    private Integer gradoAcademico;
    private String escuela;
    private Integer statusAcademico;
    private String ciudad;
    private String estado;
    private String pais;
    private Boolean publicidadEmail;
    private Integer tipo;

    @Columna(nombre = "apellidos")
    public String getApellidos() {
        return apellidos;
    }

    public void setApellidos(String apellidos) {
        this.apellidos = apellidos;
    }

    @Columna(nombre = "ciudad")
    public String getCiudad() {
        return ciudad;
    }

    public void setCiudad(String ciudad) {
        this.ciudad = ciudad;
    }

    @Columna(nombre = "email")
    public String getEmail() {
        return email;
    }

    public void setEmail(String email) {
        this.email = email;
    }

    @Columna(nombre = "escuela")
    public String getEscuela() {
        return escuela;
    }

    public void setEscuela(String escuela) {
        this.escuela = escuela;
    }

    @Columna(nombre = "estado")
    public String getEstado() {
        return estado;
    }

    public void setEstado(String estado) {
        this.estado = estado;
    }

    @Columna(nombre = "fecha_registro")
    public Date getFechaRegistro() {
        return fechaRegistro;
    }

    public void setFechaRegistro(Date fechaRegistro) {
        this.fechaRegistro = fechaRegistro;
    }

    @Columna(nombre = "ultimo_ingreso")
    public Date getFechaUltimoIngreso() {
        return fechaUltimoIngreso;
    }

    public void setFechaUltimoIngreso(Date fechaUltimoIngreso) {
        this.fechaUltimoIngreso = fechaUltimoIngreso;
    }

    @Columna(nombre = "grado_academico")
    public Integer getGradoAcademico() {
        return gradoAcademico;
    }

    public void setGradoAcademico(Integer gradoAcademico) {
        this.gradoAcademico = gradoAcademico;
    }

    @Columna(nombre = "id")
    public String getId() {
        return id;
    }

    public void setId(String id) {
        this.id = id;
    }

    @Columna(nombre = "escuela")
    public String getNombre() {
        return nombre;
    }

    public void setNombre(String nombre) {
        this.nombre = nombre;
    }

    @Columna(nombre = "pais")
    public String getPais() {
        return pais;
    }

    public void setPais(String pais) {
        this.pais = pais;
    }

    @Columna(nombre = "password")
    public String getPassword() {
        return password;
    }

    public void setPassword(String password) {
        this.password = password;
    }

    @Columna(nombre = "publicidad_email")
    public Boolean isPublicidadEmail() {
        return publicidadEmail;
    }

    public void setPublicidadEmail(boolean publicidadEmail) {
        this.publicidadEmail = publicidadEmail;
    }

    @Columna(nombre = "status")
    public Boolean getStatus() {
        return status;
    }

    public void setStatus(Boolean status) {
        this.status = status;
    }

    @Columna(nombre = "status_academico")
    public Integer getStatusAcademico() {
        return statusAcademico;
    }

    public void setStatusAcademico(Integer statusAcademico) {
        this.statusAcademico = statusAcademico;
    }

    @Columna(nombre = "tipo")
    public Integer getTipo() {
        return tipo;
    }

    public void setTipo(Integer tipo) {
        this.tipo = tipo;
    }

    public String tojson() {
        HashMap<String, Object> usr = new HashMap<String, Object>();
        usr.put("id", getId());
        usr.put("nombre", getNombre());
        usr.put("apellidos", getApellidos());
        usr.put("email", getEmail());
        usr.put("status", getStatus());
        usr.put("fechaRegistro", getFechaRegistro());
        usr.put("fechaUltimoIngreso", getFechaUltimoIngreso());
        usr.put("gradoAcademico", getGradoAcademico());
        usr.put("escuela", getEscuela());
        usr.put("statusAcademico", getStatusAcademico());
        usr.put("ciudad", getCiudad());
        usr.put("estado", getEstado());
        usr.put("pais", getPais());
        usr.put("publicidadEmail", isPublicidadEmail());
        usr.put("tipo", getTipo());
        return new Gson().toJson(usr);
    }

    public static void main(String... args) {/*
         * HashMap<String, Object> usr = new HashMap<String, Object>();
         * usr.put("id",0); usr.put("nombre",0); usr.put("apellidos",0);
         * usr.put("email",0); usr.put("password",0); usr.put("status",0);
         * usr.put("fechaRegistro",0); usr.put("fechaUltimoIngreso",0);
         * usr.put("gradoAcademico",0); usr.put("escuela",0);
         * usr.put("statusAcademico",0); usr.put("ciudad",0);
         * usr.put("estado",0); usr.put("pais",0); usr.put("publicidadEmail",0);
        usr.put("tipo",0);//
         */
        long d = new Date().getTime();
        System.out.println();
        Usuario usr = new Usuario();
        usr.setApellidos("kazares"); 
        ArrayList<Usuario> datos = new UtilDao<Usuario>(usr).read();
        System.out.println(d - (d=new Date().getTime()));
        datos = new UtilDao<Usuario>(usr).read();
        System.out.println(d - (d=new Date().getTime()));
        datos = new UtilDao<Usuario>(usr).read();
        System.out.println(d - (d=new Date().getTime()));
        datos = new UtilDao<Usuario>(usr).read();
        System.out.println(d - (d=new Date().getTime()));
        //usr.setFechaRegistro(new Date());        
        System.out.println(usr.tojson());
    }
}
